







{
	double radius = Math.sqrt(f4*f4 + f6*f6);
	double angle = Math.asin(f6/Math.max(.000000001,radius));
	if(f4 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f3));
	angle += f13*speed;
	f4 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f6 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}

f15 += f8;
if(1 < f15){
	f15 -= 2;
}else if(f15 < -1){
	f15 += 2;
}

{
	double tempFollow5Var = f16;
	f16 = f9;
	f9 = f14;
	f14 = f1;
	f1 = f11;
	f11 = tempFollow5Var;
}



if(0 < f7){
	f0 *= 1 - f7;
	f0 += 0 < f12 ? f2 : f5;
}else{ 
	if(0 < f12){
		f2 *= 1 - (-f7);
		f2 += (-f7)*f0;
	}else{
		f5 *= 1 - (-f7);
		f5 += (-f7)*f0;
	}
}


if(0 < f10 && f7 < 0){ f7 -= 2*f10*f7; }

f13 = Math.max(f12,f10);

{
	double tempFollow3Var = f3;
	f3 = f8;
	f8 = f10;
	f10 = tempFollow3Var;
}








{
	double radius = Math.sqrt(f12*f12 + f2*f2);
	double angle = Math.asin(f2/Math.max(.000000001,radius));
	if(f12 < 0){ angle += Math.PI; }
	double speed = 1 / Math.max(.000000001, Math.abs(f3));
	angle += f6*speed;
	f12 = Math.max( -1., Math.min(radius*Math.cos(angle), 1.) );
	f2 = Math.max( -1., Math.min(radius*Math.sin(angle), 1.) );
}